
/*
 * @author Gabriel Bronzatti Moro
 * 
 * Função javascript responsável por estabelecer uma comunicação assíncrona
 * para com o servidor. Seu objetivo é recuperar o nome dos possíveis amigos
 * que possuam igualidade de seus nomes para com o pesquisado.
 * Exemplo: "O usuário digita o caracter 'a', a busca assíncrona retornará
 * todos os nomes que iniciam com determinado caractere.
 * 
 */

function sugestionFunction(str)
{
    var xmlhttp;

    /*  verifica se a string está vazia
     * se sim é quebrada a função com 'return;'
     */

    if (str.length == 0)
    {
        document.getElementById("txtHint").innerHTML = "";
        return;
    }

    /*
     * Verifica se o browser possui o suporte à inicialização 
     * de objetos XMLHttpRequest, pois, o suporte é restrito para browsers: IE7+,MOZILLA FIREFOX, 
     * GOOGLE CHROME, GOOGLE CHROMIUM, OPERA e SAFARI
     */

    if (window.XMLHttpRequest)
    {
        xmlhttp = new XMLHttpRequest();
    }

    /*
     * Caso não possua suporte, é ativado inicializado o objeto ActiveXObect, 
     * geralmente o browser que não dá suporte à XMLHttpRequest é o Internet Explorer, e nesse
     * caso deve ser utilizado o ActiveXObject e deve passar por parâmetro qual o tipo de Requisição
     * que será utilizada, por exemplo, nesse caso será utilizada uma requisição XML
     */

    else
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    /*
     * o objeto xmlhttp possuí uma função chamada onreadystatechange, ou seja,
     * que deve receber uma função responsável pela mudança do estado remoto da 
     * requisição, é utilizado em comunicações assíncronas... 
     * 
     * @returns {undefined}
     */
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("txtHint").innerHTML = "Amigo(s) encontrado(s): " + xmlhttp.responseText;
        }
    }

    /*Após isso é especificado no método open do objeto xmlhttp, que o método de envio
     * do formulário será o método GET e também que o caminho do script servidor responsável
     * por validar no servidor à recuperação das informações do banco de dados, após
     * isso define o valor que foi recuperado do usuário, como utilizamos método de envio
     * GET, especificamos na própria url esse valor denominado str, será true pois já validamos
     * se a string é vazia ou não*/
    xmlhttp.open("GET", "../controller/Sugestion.php?q=" + str, true);
    /*Após enviamos à requisição assíncrona*/
    xmlhttp.send();
}
